/*! \file Factory.h
 *	\brief <write description for Factory.h>
 *
 *	created:	2010/03/11
 *	created:	11:3:2010   1:36
 *	filename: 	c:\src\tactics-engine\libs\gd\Factory.h
 *	file path:	c:\src\tactics-engine\libs\gd
 *	file base:	Factory
 *	file ext:	h
 *	author:		Vitalii Trubchaninov
 *				venngraydog@gmail.com
 */

#ifndef _GD_FACTORY_H_
#define _GD_FACTORY_H_

#pragma once

#include <core/SmartPtr.h>
#include <utils/Singleton.h>

namespace tt{
namespace gd{

class Driver;

class Factory : public utils::Singleton<Factory>
{
public:
	Factory();
	virtual ~Factory();

	virtual SharedPtr<Driver> createDriver() = 0;
};

} //namespace gd

TT_SINGLETON_GET_FUNCTION(gd::Factory, ttGDFactory);

} //namespace tt

#endif //_GD_FACTORY_H_